#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main()
{
  /*
    write(1, "write", 5);                     // 系统调用接口没有缓冲区，这个写入到标准输出是立即执行的
    printf("printf");                        // 库函数此时没有手动刷新缓冲区，要么 \n 来刷新缓冲区 
    fprintf(stdout, "fprintf");             //此时等价于上面那个printf函数
    fwrite("fwrite", 1, 6, stdout);        // 写入到标准输出，同样没有刷新缓冲区           

    sleep(3); // 为了体现出区别，睡眠3秒后，在函数退出前刷新缓冲区。
    */ 
    int fd = open("./tmp.txt", O_RDWR|O_CREAT, 0664);
    printf("%d\n", stdin->_fileno);
    printf("%d\n", stdout->_fileno);
    printf("%d\n", stderr->_fileno);
    printf("%d\n", fd);
    stdout->_fileno = fd;

    printf("hello world\n");
    fprintf(stdout, "hello world\n");

    return 0;
}
